package seqlist.LeetCode;
//141. 环形链表
//给你一个链表的头节点 head ，判断链表中是否有环。

/**
 * 思路：用快慢指针。创建两个引用slow和fast。
 * slow一次走一步，fast一次走两步。当slow进入环形节点时，
 * 当slow走当一半路径时，不管当时的fast在哪肯定会超过slow。
 * 因为fast比slow快一倍，slow走一半，fast肯定走完了一圈，
 * 如果是环形必然会路过。
 */
public class Num141_hasCycle {

    public boolean hasCycle(ListNode head) {

        ListNode slow = head;//慢指针
        ListNode fast = head;//快指针

        while(fast != null && fast.next != null){

            slow = slow.next;
            fast = fast.next.next;
            //某一刻路过时
            if(slow == fast){
                return true;
            }
        }
        return false;
    }

}
